import java.util.ArrayList;
import java.util.List;

//class Solution {
//    public List<List<Integer>> generate(int numRows) {
//        List<List<Integer>> ret = new ArrayList<>();
//        for (int i = 0; i < numRows; i++) {
//            //新定义一行
//            List<Integer> row = new ArrayList<>();
//            for (int j = 0; j <= i; j++) {
//                if (j == 0 || j == i) {
//                    row.add(1);
//                }else {
//                    //添加上一行的数据（上一行的j-1和j位置）
//                    row.add(ret.get(i-1).get(j-1) + ret.get(i-1).get(j));
//                }
//            }
//            //每一次将新的一行加入总的二维顺序表中
//            ret.add(row);
//        }
//        return ret;
//    }
//}


//class Solution {
//    public int removeElement(int[] nums, int val) {
//        int left = 0;
//        for (int right = 0; right < nums.length; right++) {
//            if (nums[right] != val) {
//                nums[left] = nums[right];
//                left++;
//            }
//        }
//        return left;
//    }
//}


//class Solution {
//    public int removeDuplicates(int[] nums) {
//        //快慢指针
//        int left = 0;
//        int right = 1;
//        while(right < nums.length){
//            if(nums[left] != nums[right]){
//                left++;
//                nums[left] = nums[right];
//            }
//            right++;
//        }
//        return left + 1;
//    }
//}


class Solution {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        int pA = 0;
        int pB = 0;
        int cur = 0;
        int[] sordNum = new int[m + n];
        while (pA < m && pB < n) {
            if (pA == m) {//nums1已满,放入nums2
                cur = nums2[pB++];
            } else if (pB == n) {//nums2已满，放入nums1
                cur = nums1[pA++];
            } else if (nums1[pA] < nums2[pB]) {//nums1的数据小于nums2
                cur = nums1[pA++];
            } else {//nums1的数据大于等于nums2
                cur = nums2[pB++];
            }
            sordNum[pA + pB - 1] = cur;
        }
        for (int i = 0; i != m + n; ++i) {
            nums1[i] = sordNum[i];
        }
    }
}
